bitkeeper revision 1.1236.32.2 (
42360b33-HudAOddVBt3ez4shMiyOw)
Initial fullshadow checkin.
Things still to do:
- reuse snapshots intelligently.
- minimize tlb flushes during resync.
- figure out when to free up no-longer-used L2 shadows, and
generally deal with out-of-memory kinds of problems.
Some basic guidelines:
- With fullshadow on, you can not trust
linear_pg_table unless you have first checked whether the VA
in which you are interested is out-of-sync or not.
- Significant new functions/macros include:
page_out_of_sync(mfn): returns true if page is out of sync.
shadow_mark_out_of_sync: make a page be out of sync (allocating
any necessary snapshots, etc)
shadow_out_of_sync(va): returns true if the current mappings
involved in va are out-of-sync.
shadow_sync_va(): bring the pages involved in mapping a particular
va back into sync. Currently calls shadow_sync_all().
shadow_sync_all(): bring all pages back in-sync.
Signed-off-by: michael.fetterman@cl.cam.ac.uk